/**
 * 
 */
package edu.isistan.genetic.operators;

import java.util.Vector;

import edu.isistan.metamodel.Array;
import edu.isistan.metamodel.Collection;
import edu.isistan.metamodel.DataType;

/**
 * @author marcos.trotti
 *
 */
public class Collections implements Operator {

	/**
	 * 
	 */
	public Collections() {
	}

	/* (non-Javadoc)
	 * @see operators.Operator#isCompatible(edu.isistan.metamodel.DataType)
	 */
	
	public boolean isCompatible(DataType aDataType) {
		return aDataType.isCollection();
	}

	/* (non-Javadoc)
	 * @see operators.Operator#isEncapsulationCompatible()
	 */
	
	public boolean isEncapsulationCompatible() {
		return false;
	}

	/* (non-Javadoc)
	 * @see operators.Operator#mutate(java.util.Vector)
	 */
	
	public Vector<DataType> mutate(Vector<DataType> aDataTypes) {
		Vector<DataType> aResultSet=new Vector<DataType>();
		for (DataType dataType : aDataTypes) {
			if (dataType.isArray())
				aResultSet.add(new Collection(dataType.getName(), ((Collection)dataType).getDataType(), dataType.getDoc()));
			else
				aResultSet.add(new Array(dataType.getName(), ((Collection)dataType).getDataType(), dataType.getDoc()));
		}
		return aResultSet;
	}

	@Override
	public String toString() {
		return "Collections []";
	}

	
}
